package com.powergisol.gis.vo;

/**
 * @author Frog
 */
public class FeatureTypeMap {

    /**
     * type : GridCoverage
     * nativeCRS : {"wkid":"EPSG:4326","name":"WGS84(DD)","datum":"SPHEROID[\"WGS84\", 6378137.0, 298.257223563]","spheroid":"OGC","wkt":"GEOGCS[\"WGS84(DD)\", \r\n  DATUM[\"WGS84\", \r\n    SPHEROID[\"WGS84\", 6378137.0, 298.257223563]], \r\n  PRIMEM[\"Greenwich\", 0.0], \r\n  UNIT[\"degree\", 0.017453292519943295], \r\n  AXIS[\"Geodetic longitude\", EAST], \r\n  AXIS[\"Geodetic latitude\", NORTH]]"}
     * title : null
     * name : http://www.opengis.net/gml:GridCoverage
     * crs : {"wkid":"EPSG:4326","name":"WGS84(DD)","datum":"SPHEROID[\"WGS84\", 6378137.0, 298.257223563]","spheroid":"OGC","wkt":"GEOGCS[\"WGS84(DD)\", \r\n  DATUM[\"WGS84\", \r\n    SPHEROID[\"WGS84\", 6378137.0, 298.257223563]], \r\n  PRIMEM[\"Greenwich\", 0.0], \r\n  UNIT[\"degree\", 0.017453292519943295], \r\n  AXIS[\"Geodetic longitude\", EAST], \r\n  AXIS[\"Geodetic latitude\", NORTH]]"}
     * nativeBoundingBox : {"minx":105.85135136654434,"maxx":105.89847612575925,"miny":30.19004643917346,"maxy":30.231436645735567,"crs":"WGS84(DD)"}
     * latLonBoundingBox : {"minx":105.85135136654434,"maxx":105.89847612575925,"miny":30.19004643917346,"maxy":30.231436645735567,"crs":"WGS84(DD)"}
     * file :
     * enabled : false
     * attributes : null
     */

    private String type;
    private NativeCRSBean nativeCRS;
    private Object title;
    private String name;
    private CrsBean crs;
    private NativeBoundingBoxBean nativeBoundingBox;
    private LatLonBoundingBoxBean latLonBoundingBox;
    private String file;
    private boolean enabled;
    private Object attributes;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public NativeCRSBean getNativeCRS() {
        return nativeCRS;
    }

    public void setNativeCRS(NativeCRSBean nativeCRS) {
        this.nativeCRS = nativeCRS;
    }

    public Object getTitle() {
        return title;
    }

    public void setTitle(Object title) {
        this.title = title;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public CrsBean getCrs() {
        return crs;
    }

    public void setCrs(CrsBean crs) {
        this.crs = crs;
    }

    public NativeBoundingBoxBean getNativeBoundingBox() {
        return nativeBoundingBox;
    }

    public void setNativeBoundingBox(NativeBoundingBoxBean nativeBoundingBox) {
        this.nativeBoundingBox = nativeBoundingBox;
    }

    public LatLonBoundingBoxBean getLatLonBoundingBox() {
        return latLonBoundingBox;
    }

    public void setLatLonBoundingBox(LatLonBoundingBoxBean latLonBoundingBox) {
        this.latLonBoundingBox = latLonBoundingBox;
    }

    public String getFile() {
        return file;
    }

    public void setFile(String file) {
        this.file = file;
    }

    public boolean isEnabled() {
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public Object getAttributes() {
        return attributes;
    }

    public void setAttributes(Object attributes) {
        this.attributes = attributes;
    }

    public static class NativeCRSBean {
        /**
         * wkid : EPSG:4326
         * name : WGS84(DD)
         * datum : SPHEROID["WGS84", 6378137.0, 298.257223563]
         * spheroid : OGC
         * wkt : GEOGCS["WGS84(DD)",
         DATUM["WGS84",
         SPHEROID["WGS84", 6378137.0, 298.257223563]],
         PRIMEM["Greenwich", 0.0],
         UNIT["degree", 0.017453292519943295],
         AXIS["Geodetic longitude", EAST],
         AXIS["Geodetic latitude", NORTH]]
         */

        private String wkid;
        private String name;
        private String datum;
        private String spheroid;
        private String wkt;

        public String getWkid() {
            return wkid;
        }

        public void setWkid(String wkid) {
            this.wkid = wkid;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getDatum() {
            return datum;
        }

        public void setDatum(String datum) {
            this.datum = datum;
        }

        public String getSpheroid() {
            return spheroid;
        }

        public void setSpheroid(String spheroid) {
            this.spheroid = spheroid;
        }

        public String getWkt() {
            return wkt;
        }

        public void setWkt(String wkt) {
            this.wkt = wkt;
        }
    }

    public static class CrsBean {
        /**
         * wkid : EPSG:4326
         * name : WGS84(DD)
         * datum : SPHEROID["WGS84", 6378137.0, 298.257223563]
         * spheroid : OGC
         * wkt : GEOGCS["WGS84(DD)",
         DATUM["WGS84",
         SPHEROID["WGS84", 6378137.0, 298.257223563]],
         PRIMEM["Greenwich", 0.0],
         UNIT["degree", 0.017453292519943295],
         AXIS["Geodetic longitude", EAST],
         AXIS["Geodetic latitude", NORTH]]
         */

        private String wkid;
        private String name;
        private String datum;
        private String spheroid;
        private String wkt;

        public String getWkid() {
            return wkid;
        }

        public void setWkid(String wkid) {
            this.wkid = wkid;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getDatum() {
            return datum;
        }

        public void setDatum(String datum) {
            this.datum = datum;
        }

        public String getSpheroid() {
            return spheroid;
        }

        public void setSpheroid(String spheroid) {
            this.spheroid = spheroid;
        }

        public String getWkt() {
            return wkt;
        }

        public void setWkt(String wkt) {
            this.wkt = wkt;
        }
    }

    public static class NativeBoundingBoxBean {
        /**
         * minx : 105.85135136654434
         * maxx : 105.89847612575925
         * miny : 30.19004643917346
         * maxy : 30.231436645735567
         * crs : WGS84(DD)
         */

        private double minx;
        private double maxx;
        private double miny;
        private double maxy;
        private String crs;

        public double getMinx() {
            return minx;
        }

        public void setMinx(double minx) {
            this.minx = minx;
        }

        public double getMaxx() {
            return maxx;
        }

        public void setMaxx(double maxx) {
            this.maxx = maxx;
        }

        public double getMiny() {
            return miny;
        }

        public void setMiny(double miny) {
            this.miny = miny;
        }

        public double getMaxy() {
            return maxy;
        }

        public void setMaxy(double maxy) {
            this.maxy = maxy;
        }

        public String getCrs() {
            return crs;
        }

        public void setCrs(String crs) {
            this.crs = crs;
        }
    }

    public static class LatLonBoundingBoxBean {
        /**
         * minx : 105.85135136654434
         * maxx : 105.89847612575925
         * miny : 30.19004643917346
         * maxy : 30.231436645735567
         * crs : WGS84(DD)
         */

        private double minx;
        private double maxx;
        private double miny;
        private double maxy;
        private String crs;

        public double getMinx() {
            return minx;
        }

        public void setMinx(double minx) {
            this.minx = minx;
        }

        public double getMaxx() {
            return maxx;
        }

        public void setMaxx(double maxx) {
            this.maxx = maxx;
        }

        public double getMiny() {
            return miny;
        }

        public void setMiny(double miny) {
            this.miny = miny;
        }

        public double getMaxy() {
            return maxy;
        }

        public void setMaxy(double maxy) {
            this.maxy = maxy;
        }

        public String getCrs() {
            return crs;
        }

        public void setCrs(String crs) {
            this.crs = crs;
        }
    }

    @Override
    public String toString() {
        return "FeatureType{" +
                "type='" + type + '\'' +
                ", nativeCRS=" + nativeCRS +
                ", title=" + title +
                ", name='" + name + '\'' +
                ", crs=" + crs +
                ", nativeBoundingBox=" + nativeBoundingBox +
                ", latLonBoundingBox=" + latLonBoundingBox +
                ", file='" + file + '\'' +
                ", enabled=" + enabled +
                ", attributes=" + attributes +
                '}';
    }
}

